package pe.com.certicom.scv.controller;

import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.support.SessionStatus;

import pe.com.certicom.scv.domain.VeriLaboral;
import pe.com.certicom.scv.domain.Usuario;
import pe.com.certicom.scv.service.ScvAdminService;
import pe.com.certicom.scv.validator.UsuarioValidator;

@Controller
public class SCVController {
	
    @Autowired
    private ScvAdminService ScvAdminService;
    
    @RequestMapping(value = "/sistema/mostrarUsuarios", method = RequestMethod.GET)
	public String processListarUsuarios(Model modelo){
		List<Usuario> list = new ArrayList<Usuario>();
		list =ScvAdminService.obtenerListaUsuario();
		modelo.addAttribute("Usuarios", list);
		return "sistema/mostrarUsuarios";
	}
    
    @RequestMapping(value = "/sistema/buscarUsuario", method = RequestMethod.GET)
	public String processObtenerUsuario(Model modelo, HttpSession session,
		@ModelAttribute("Usuario") Usuario usuario, BindingResult result,SessionStatus status) {
		Usuario usuariodb = ScvAdminService.getUsuario(usuario.getIdUsuario());
		modelo.addAttribute("Usuario", usuariodb);
		modelo.addAttribute("usuariomodificado", "N");
		status.setComplete();
		return "/sistema/detalleUsuario";
	}

    @RequestMapping(value = "/sistema/modificarUsuario", method = RequestMethod.POST)
	public String processModificarUsuario(Model modelo,
		@ModelAttribute("Usuario") Usuario usuario, BindingResult result, SessionStatus status) {
		new UsuarioValidator().validarForm(usuario, result);
		if(!result.hasErrors()){
		ScvAdminService.modificarUsuario(usuario);
		status.setComplete();
		modelo.addAttribute("usuariomodificado", "M");
		}else{
		modelo.addAttribute("usuariomodificado", "E");
		}
		return "sistema/detalleUsuario";
	}
   
    @RequestMapping(value = "/sistema/eliminarUsuario", method = RequestMethod.GET)
	public String processEliminarUsuario(Model modelo,
		@ModelAttribute("Usuario") Usuario usuario, BindingResult result, SessionStatus status) {
    	ScvAdminService.eliminarUsuario(usuario.getIdUsuario());
		status.setComplete();
		List<Usuario> list = new ArrayList<Usuario>();
		list =ScvAdminService.obtenerListaUsuario();
		modelo.addAttribute("Usuarios", list);
		return "sistema/mostrarUsuarios";
	}
    
    @RequestMapping(value = "/sistema/agregarUsuario1", method = RequestMethod.GET)
	public String processAgregarUsuario1(Model modelo,
			@ModelAttribute("Usuario") Usuario usuario, BindingResult result, SessionStatus status) {
    	modelo.addAttribute("Usuario", new Usuario());
		return "sistema/agregarUsuario";
	}
    
    @RequestMapping(value = "/sistema/agregarUsuario", method = RequestMethod.POST)
	public String processAgregarUsuario(Model modelo,
		@ModelAttribute("Usuario") Usuario usuario, BindingResult result, SessionStatus status) {
		new UsuarioValidator().validarForm(usuario, result);
		if(!result.hasErrors()){
		ScvAdminService.agregarUsuario(usuario);
		status.setComplete();
		modelo.addAttribute("usuarioagregado", "A");
		}else{
		modelo.addAttribute("usuarioagregado", "E");
		}
		return "sistema/agregarUsuario";
	}
    
    @RequestMapping(value = "/verificacion/agregarVerificacionLaboral", method = RequestMethod.GET)
	public String processNuevaVerificacionLaboral(Model modelo,
		@ModelAttribute("VeriLaboral") VeriLaboral verilaboral, BindingResult result, SessionStatus status) {
    	modelo.addAttribute("VeriLaboral", new VeriLaboral());
		return "verificacion/agregarVerifiLaboral";
	}
}







